package com.my_musc_service.base;


import com.my_musc_service.common.R;
import com.my_musc_service.exception.CustomException;
import com.my_musc_service.utils.ExceptionUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author ADun
 * @date 2020/2/14
 */
//环绕通知
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 统一异常处理
     *
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public R error(Exception e) {
        //打印异常跟踪栈，在控制台中显示异常跟踪信息
        //e.printStackTrace();
        //遵循日志记录器的配置输出日志
        log.error(ExceptionUtils.getMessage(e));
        return R.error();
    }


    //自定义异常
    //使用一个异常处理方法，处理所有的异常信息，并显示个性化的异常结果
    @ExceptionHandler(CustomException.class)
    @ResponseBody
    public R error(CustomException e) {
        //遵循日志记录器的配置输出日志
        log.error(ExceptionUtils.getMessage(e));
        return R.error().message(e.getMessage());

    }
}
